//
//  LZTableViewAdapter.h
//  TeacherNet
//
//  Created by slz on 2018/1/7.
//  Copyright © 2018年 bnsr. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "LZScrollViewAdapter.h"
#import "TGMTableEmptyCell.h"


@class TGMModel2TableViewAdapter;
@protocol TGMMode2TableViewAdapterDelegate <NSObject>

@optional
- (BOOL)adapter:(TGMModel2TableViewAdapter*)adapter tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath;

- (UIEdgeInsets)adapter:(TGMModel2TableViewAdapter*)adapter tableViewLayoutContentInset:(UITableView *)tableview;

- (void)adapter:(TGMModel2TableViewAdapter*)adapter emptyCellClickWithUrl:(NSString *)url;
@end


@protocol TGMMode2TableViewScrollDelegate <NSObject>
- (void)model2TableViewDidScroll:(UIScrollView*)scrollView;
- (void)model2TableViewWillBeginDragging:(UIScrollView *)scrollView;
- (void)model2TableViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
- (void)model2TableViewWillBeginDecelerating:(UIScrollView *)scrollView;
- (void)model2TableViewDidEndDecelerating:(UIScrollView *)scrollView;
- (void)model2TableViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
@end

@interface LZTableViewAdapter : LZScrollViewAdapter
{
    @protected
        TGMTableEmptyCell *_emptyCell;
        id _listData;
        
        BOOL _hasBinded;
}
@property(nonatomic, weak)id <TGMMode2TableViewAdapterDelegate> delegate;

@property(nonatomic, weak, readonly)UITableView   *tableView;
@property(nonatomic, strong)id listData;
@property(nonatomic, readonly)BOOL hasBinded;

@property(nonatomic, strong)UIImage *emptyContentImage;//内容为空时候的图片，子类可以覆盖getter方法
@property(nonatomic, strong)NSString *emptyContentText;//内容为空时候的文字
@property (nonatomic,assign)BOOL emptyCellReceiveClick;//控制空cell能否点击刷新 default YES
@property(nonatomic,assign)NSInteger emptyCellHeight;//业务需求 空cell在餐厅页面高度要调整为0
@property(nonatomic,copy)NSString * emptyCellUrl;//本地跳转的url  比如提示用户写游记  写餐厅 只有当url>0时 才能显示 否则显


- (void)bindTableView:(UITableView*)tableview;

- (void)bindTableView:(UITableView*)tableview
           emptyImage:(UIImage*)emptyImage
            emptyText:(NSString*)emptyText;


- (NSInteger)model2UITableView_numberOfSectionsInTableView:(UITableView *)tableView;

- (NSInteger) model2UITableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) section;

- (UITableViewCell *)model2UITableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;

- (CGFloat)model2UITableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

- (void)model2UITableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

- (void)model2UITableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;

-(void)model2UITableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

- (UIView *)model2UITableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
- (CGFloat)model2UITableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (UIView *)model2UITableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;
- (CGFloat)model2UITableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

- (NSInteger)model2TableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index;

- (CGFloat)model2UITableView_heightForNoMoreDataCell:(UITableView *)tableView;

- (NSArray<NSString *> *)model2SectionIndexTitlesForTableView:(UITableView *)tableView;

- (BOOL)model2UITableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;
/**
 * @return
 *   YES - 子类处理了点击
 *   NO  - 子类未处理
 */
- (BOOL)model2UITableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
@end
